# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.CloudAsset.V1.Model.SoftwarePackage do
  @moduledoc """
  Software package information of the operating system.

  ## Attributes

  *   `aptPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.VersionedPackage.t`, *default:* `nil`) - Details of an APT package. For details about the apt package manager, see https://wiki.debian.org/Apt.
  *   `cosPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.VersionedPackage.t`, *default:* `nil`) - Details of a COS package.
  *   `googetPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.VersionedPackage.t`, *default:* `nil`) - Details of a Googet package. For details about the googet package manager, see https://github.com/google/googet.
  *   `qfePackage` (*type:* `GoogleApi.CloudAsset.V1.Model.WindowsQuickFixEngineeringPackage.t`, *default:* `nil`) - Details of a Windows Quick Fix engineering package. See https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering for info in Windows Quick Fix Engineering.
  *   `windowsApplication` (*type:* `GoogleApi.CloudAsset.V1.Model.WindowsApplication.t`, *default:* `nil`) - Details of Windows Application.
  *   `wuaPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.WindowsUpdatePackage.t`, *default:* `nil`) - Details of a Windows Update package. See https://docs.microsoft.com/en-us/windows/win32/api/_wua/ for information about Windows Update.
  *   `yumPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.VersionedPackage.t`, *default:* `nil`) - Yum package info. For details about the yum package manager, see https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/ch-yum.
  *   `zypperPackage` (*type:* `GoogleApi.CloudAsset.V1.Model.VersionedPackage.t`, *default:* `nil`) - Details of a Zypper package. For details about the Zypper package manager, see https://en.opensuse.org/SDB:Zypper_manual.
  *   `zypperPatch` (*type:* `GoogleApi.CloudAsset.V1.Model.ZypperPatch.t`, *default:* `nil`) - Details of a Zypper patch. For details about the Zypper package manager, see https://en.opensuse.org/SDB:Zypper_manual.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :aptPackage => GoogleApi.CloudAsset.V1.Model.VersionedPackage.t() | nil,
          :cosPackage => GoogleApi.CloudAsset.V1.Model.VersionedPackage.t() | nil,
          :googetPackage => GoogleApi.CloudAsset.V1.Model.VersionedPackage.t() | nil,
          :qfePackage =>
            GoogleApi.CloudAsset.V1.Model.WindowsQuickFixEngineeringPackage.t() | nil,
          :windowsApplication => GoogleApi.CloudAsset.V1.Model.WindowsApplication.t() | nil,
          :wuaPackage => GoogleApi.CloudAsset.V1.Model.WindowsUpdatePackage.t() | nil,
          :yumPackage => GoogleApi.CloudAsset.V1.Model.VersionedPackage.t() | nil,
          :zypperPackage => GoogleApi.CloudAsset.V1.Model.VersionedPackage.t() | nil,
          :zypperPatch => GoogleApi.CloudAsset.V1.Model.ZypperPatch.t() | nil
        }

  field(:aptPackage, as: GoogleApi.CloudAsset.V1.Model.VersionedPackage)
  field(:cosPackage, as: GoogleApi.CloudAsset.V1.Model.VersionedPackage)
  field(:googetPackage, as: GoogleApi.CloudAsset.V1.Model.VersionedPackage)
  field(:qfePackage, as: GoogleApi.CloudAsset.V1.Model.WindowsQuickFixEngineeringPackage)
  field(:windowsApplication, as: GoogleApi.CloudAsset.V1.Model.WindowsApplication)
  field(:wuaPackage, as: GoogleApi.CloudAsset.V1.Model.WindowsUpdatePackage)
  field(:yumPackage, as: GoogleApi.CloudAsset.V1.Model.VersionedPackage)
  field(:zypperPackage, as: GoogleApi.CloudAsset.V1.Model.VersionedPackage)
  field(:zypperPatch, as: GoogleApi.CloudAsset.V1.Model.ZypperPatch)
end

defimpl Poison.Decoder, for: GoogleApi.CloudAsset.V1.Model.SoftwarePackage do
  def decode(value, options) do
    GoogleApi.CloudAsset.V1.Model.SoftwarePackage.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.CloudAsset.V1.Model.SoftwarePackage do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
